//package com.example.backend.controller;
//
//import com.example.backend.common.api.R;
//import com.example.backend.dto.WxLoginDTO;
//import com.example.backend.service.WxAuthService;
//import com.example.backend.service.UserService;
//import com.example.backend.dto.RegisterDTO;
//import com.example.backend.dto.BindDTO;
//import com.example.backend.dto.PhoneBindDTO;
//import jakarta.validation.Valid;
//import lombok.RequiredArgsConstructor;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Map;
//
//@RestController
//@RequestMapping("/wx/auth")
//@RequiredArgsConstructor
//public class WxAuthController {
//
//    private final WxAuthService wxAuthService;
//    private final UserService userService;
//
//    /**
//     * 小程序登录
//     */
//    @PostMapping("/login")
//    public R<Map<String, Object>> login(@RequestBody @Valid WxLoginDTO loginDTO) {
//        return R.ok(wxAuthService.login(loginDTO));
//    }
//
//    /**
//     * 场景一：小程序内注册新账号并绑定
//     */
//    @PostMapping("/register-and-bind")
//    public R<Void> registerAndBind(@RequestHeader("X-WX-OPENID") String openid,
//                                  @RequestBody @Valid RegisterDTO registerDTO) {
//        wxAuthService.registerAndBind(openid, registerDTO);
//        return R.ok();
//    }
//
//    /**
//     * 场景二：绑定已有账号（通过账号密码）
//     */
//    @PostMapping("/bind-by-password")
//    public R<Void> bindByPassword(@RequestHeader("X-WX-OPENID") String openid,
//                                 @RequestBody @Valid BindDTO bindDTO) {
//        wxAuthService.bindByPassword(openid, bindDTO);
//        return R.ok();
//    }
//
//    /**
//     * 场景三：绑定已有账号（通过手机验证码）
//     */
//    @PostMapping("/bind-by-phone")
//    public R<Void> bindByPhone(@RequestHeader("X-WX-OPENID") String openid,
//                              @RequestBody @Valid PhoneBindDTO bindDTO) {
//        wxAuthService.bindByPhone(openid, bindDTO);
//        return R.ok();
//    }
//
//    /**
//     * 解除绑定
//     */
//    @PostMapping("/unbind")
//    public R<Void> unbind(@RequestHeader("X-WX-OPENID") String openid) {
//        wxAuthService.unbind(openid);
//        return R.ok();
//    }
//}